package com.jy.rhin.domain.notification.topic.entity;

import lombok.Data;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author WeiQ
 * @date 2022/6/28 9:37
 * 主题管理
 */
@Data
public class TopicDO {

    public TopicDO() {
        this.createTime = new Date();
    }

    /**
     * 创建一个主题
     *
     * @param publisherCode
     * @param topicName
     * @param topicExp
     * @param topicDesc
     */
    public TopicDO(String publisherCode, String topicName, String topicExp, String topicDesc) {
        this.publisherCode = publisherCode;
        this.topicName = topicName;
        this.topicExp = topicExp;
        this.topicDesc = topicDesc;
        this.queryList = new ArrayList<>();
        this.createTime = new Date();
    }

    /**
     * 添加预存查询
     *
     * @param topicQuery
     * @return
     */
    public TopicDO addQuery(TopicQueryVO topicQuery) {
        this.queryList.add(topicQuery);
        return this;
    }

    private Long id;
    /**
     * 发布者代码
     */
    private String publisherCode;
    /**
     * 主题名称
     */
    private String topicName;
    /**
     * 主题表达式
     */
    private String topicExp;
    /**
     * 主题描述
     */
    private String topicDesc;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 预存查询条件
     */
    private List<TopicQueryVO> queryList;
    /**
     * 主题内容字段说明
     */
    private List<TopicPropertiesVO> properties;

}
